﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using AutorizaciondeViaje.Negocio;
using AutorizaciondeViaje.Models;
using AutorizaciondeViaje.Persistencia;

namespace AutorizaciondeViaje.Controllers
{
    public class Usuario1Controller : Controller
    {
        //Dependencias
        private AdministracionServiceImpl  AdminService = new AdministracionServiceImpl() ;
        // GET: /Usuario1/

        public ActionResult Index()
        {
            ICollection<Usuario> lista = AdminService.ListarUsuario();
            return View(lista);
        }

        //
        // GET: /Usuario1/Details/5

        public ActionResult Details(int id)
        {
            Usuario modelo = AdminService.ObtenerUsuario(id);
            return View(modelo);
        }

        //
        // GET: /Usuario1/Create

        public ActionResult Create()
        {
            try
            {
                return View();
            }
            catch
            {
                ModelState.AddModelError(String.Empty, "Error al crear Usuario");
                return View();
            }
        } 

        //
        // POST: /Usuario1/Create

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            Usuario usuarioCrear = new Usuario();
            {

                usuarioCrear.Nombres = (string)collection["Nombres"];
                usuarioCrear.Apellidos = (string)collection["Apellidos"];
                usuarioCrear.CodArea = (string)collection["CodArea"];
                usuarioCrear.CodigoG = (string)collection["CodigoG"];
                usuarioCrear.CCosto = (string)collection["CCosto"];
                usuarioCrear.DNI = (string)collection["DNI"];
                usuarioCrear.Status = (string)collection["Status"];
            };
            try
            {
                Usuario usuarioCreado = AdminService.RegistrarUsuario(usuarioCrear.Nombres, usuarioCrear.Apellidos, usuarioCrear.CodArea, usuarioCrear.CodigoG, usuarioCrear.CCosto, usuarioCrear.DNI, usuarioCrear.Status);
                TempData["mensaje"] = "Usuario " + usuarioCreado.Codigo + " creado exitosamente";
                //}
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(String.Empty, "Error al crear Usuario: " + ex.Message);
                return View("Create", usuarioCrear);
            }
        }
        
        //
        // GET: /Usuario1/Edit/5
 
        public ActionResult Edit(int id)
        {
            Usuario usuarioaCrear = AdminService.ObtenerUsuario(id);

            return View(usuarioaCrear);
        }

        //
        // POST: /Usuario1/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            Usuario usuarioaModificar = new Usuario();
            {
                usuarioaModificar.Codigo = (string)collection["Codigo"];
                usuarioaModificar.Nombres = (string)collection["Nombres"];
                usuarioaModificar.Apellidos = (string)collection["Apellidos"];
                usuarioaModificar.CodArea = (string)collection["CodArea"];
                usuarioaModificar.CodigoG = (string)collection["CodigoG"];
                usuarioaModificar.CCosto = (string)collection["CCosto"];
                usuarioaModificar.DNI = (string)collection["DNI"];
                usuarioaModificar.Status = (string)collection["Status"];

            };
            try
            {

                Usuario clienteModificado = AdminService.ModificarUsuario(usuarioaModificar);
                TempData["mensaje"] = "Usuario " + clienteModificado.Codigo + " modificado exitosamente";
                //}
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                ModelState.AddModelError(String.Empty, "Error al crear Usuario: " + ex.Message);
                return View("Edit", usuarioaModificar);
            }
        }

        //
        // GET: /Usuario1/Delete/5
 
        public ActionResult Delete(int id)
        {
            return View(AdminService.ObtenerUsuario(id));
        }

        //
        // POST: /Usuario1/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                Usuario usuarioaEliminar = AdminService.ObtenerUsuario(id);
                AdminService.EliminarUsuario(usuarioaEliminar);
                TempData["mensaje"] = "Usuario " + usuarioaEliminar.Codigo + " eliminado exitosamente";
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {

                ModelState.AddModelError(string.Empty, ex.Message);
                return View("Delete", AdminService.ObtenerUsuario(id));
            }
        }
    }
}
